1. Field of the Invention
The present invention is in the field of circuits for synchronizing asynchronous digital input signals with a clock signal.
2. Description of the Related Art
Digital circuits in an electronic system, such as, for example, a computer system, are typically controlled by a common clock signal or by a plurality of clock signals derived from a common clock signal. Thus, the circuits are "synchronized" with respect to each other so that a signal generated by a first circuit in the system can be received by and clocked into other circuits in the system because the signals generated by the first circuit have a known phase relationship with respect to the common system clock signals. The known phase relationships typically do not exist for circuits that are controlled by independent clock signals. For example, peripheral components of a computer system often use independent clocks so that the peripheral component operates at a known frequency irrespective of the operating frequency of a computer system to which it is interconnected. Although the clock signals of a peripheral component and a computer system may have the same or similar frequencies, even very small differences in the clock frequencies cause the phase relationships between the clock signals to vary. Thus, the independent clock signals are "asynchronous" with respect to each other. Therefore, if a signal is generated by a circuit controlled by a clock which is asynchronous with the system clock of a computer system, the signal cannot be simply provided to the circuits of the computer system and clocked by the clock signals derived from the system clock. Rather, the signal must be synchronized to the system clock before the signal can be applied to the circuits of the computer system.
Many synchronization circuits operate only to synchronize a particular edge of an asynchronous input signal. For example, if the input signal is an interrupt signal or a handshake signal, either a particular rising edge (low-to-high transition) or falling edge (high-to-low transition) is used to indicate or initiate an event. The actual state of the input signal may not be relevant and the opposite transition may not need to be synchronized. On the other hand, the current states of other input signals may be relevant, and it is necessary to synchronize both the transition to each state and the transition from each state as well as maintaining an output level responsive to the steady state input level of the input signal. Thus, a synchronization circuit which synchronizes both transitions is needed.